import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

import org.eclipse.swt.widgets.Display;

import oracle.jdbc.pool.OracleDataSource;


public class Application {

		private static boolean connected = true;
		private static Scanner scanner = new Scanner(System.in);
		private static Statement stmt;
		private static Client c = new Client(0,"fez", "toto", 26000, "Valence");
		
		private static void choixUtilisateur(){
			System.out.println("Voulez vous : ");
			System.out.println("	1 - Vous connectez.");
			System.out.println("	2 - Créer un compte.");
			System.out.println("	3 - Consulter les Albums et Livres publiques.");
			int choix = scanner.nextInt();
			switch(choix){
				case 1:
					connected = Utilisateur.seConnecter();
					if (connected){
						System.out.println("Connection réussie");
						choixClient();
					}
					else {
						System.out.println("Echec de la connection");
						choixUtilisateur();
					}
					break;
				case 2:
					System.out.println("Création de compte");
					Utilisateur.creerCompte();
					connected = true;
					break;
				case 3:
					System.out.println("Affichage des albums publiques");
					Utilisateur.consulterAlbums();
					choixUtilisateur();
					break;
				default:
					System.out.println("Tapez un nombre entre 1 et 3 !");
					choixUtilisateur();
					break;
			}
			
		}
		
		
		private static void choixClient(){
			System.out.println("Voulez vous : ");
			System.out.println("	1 - Vous déconnectez.");
			System.out.println("	2 - Consulter les Albums et Livres publiques .");
			System.out.println("	3 - Consulter mes Albums et mes Livres.");
			System.out.println("	4 - Gérer mes Albums et mes Livres.");
			System.out.println("	5 - Gérer mes commandes.");
			System.out.println("	6 - Gérer mon compte.");
			int choix = scanner.nextInt();
			switch(choix){
				case 1:
					connected = false;
					choixUtilisateur();
					break;
				case 2:
					System.out.println("Consultation des albums publiques");
					Utilisateur.consulterAlbums();
					choixClient();
					break;
				case 3:
					System.out.println("Consultation de mes albums.");
					c.consulterAlbums();
					choixClient();
					break;
				case 4:
					System.out.println("Gestion de mes albums et livres.");
					// TODO 
					choixClient();
					break;
				case 5:
					System.out.println("Gestion de mes commandes.");
					// TODO
					choixClient();
					break;
				case 6:
					System.out.println("Modification des paramètres de mon compte.");
					c.gererCompte();
					choixClient();
					break;
				default:
					System.out.println("Tapez un nombre entre 1 et 6 !");
					choixUtilisateur();
					break;
			}
			
		}
	


		public static Statement getStmt() {
			return stmt;
		}


		public static void setStmt() {
		
			try
			{
				String url = "jdbc:oracle:thin:@localhost:1521:XE";
				// Create a OracleDataSource instance and set properties
				OracleDataSource ods = new OracleDataSource();
				ods.setUser("userir");
				ods.setPassword("userir");
				ods.setURL(url);

				// Connect to the database
				Connection conn = ods.getConnection();

				// Create a Statement
				Application.stmt = conn.createStatement();

				// Passage de la transaction en lecture écriture avec le niveau d'isolation maximum
				Application.stmt.executeUpdate("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE");

			} 
			catch (SQLException e)
			{
				System.out.println("Erreur SQL :" + e.getMessage());
				e.printStackTrace();
			}
		}
		
		
		public static void main(String[] args){
			    Application.setStmt();
			    System.out.println("Bienvenue dans ddh Pictures !");
			
				try {
					Display display = Display.getDefault();
					InterfaceUtilisateur shell = new InterfaceUtilisateur(display);
					shell.open();
					shell.layout();
					while (!shell.isDisposed()) {
						if (!display.readAndDispatch()) {
							display.sleep();
						}
					}
				} catch (Exception e1) {
					e1.printStackTrace();
			}

		}

}
